package jframe.quartz.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.quartz.CronExpression;

/**
 * @描述:<p>quartz动态调度服务接口 </p>
 *
 * @作者: 叶平平(yepp)
 *
 * @时间: 2011-12-29 下午09:19:13
 */
public interface SchedulerService {

	/**
	 * @描述:<p>根据 Quartz Cron Expression 调试任务   </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:20:26
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param cronExpression	Quartz Cron 表达式，如 "0/10 * * ? * * *"等
	 */
	void schedule(String cronExpression);
	
	/**
	 * @描述:<p>Quartz Cron Expression 调试任务 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:21:36
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz CronTrigger名称
	 * @param cronExpression  	Quartz Cron 表达式，如 "0/10 * * ? * * *"等 
	 */
	void schedule(String name, String cronExpression);
	
	/**
	 * @描述:<p>根据 Quartz Cron Expression 调试任务</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:00:02
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz CronTrigger名称
	 * @param cronExpression	Quartz Cron 表达式，如 "0/10 * * ? * * *"等
	 * @param group	Quartz CronExpression Group
	 */
	void schedule(String name, String cronExpression,String group);
	
	/**
	 * @描述:<p>根据 Quartz Cron Expression 调试任务 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:23:00
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param cronExpression	Quartz CronExpression
	 */
	void schedule(CronExpression cronExpression);
	
	/**
	 * @描述:<p> Quartz Cron Expression 调试任务</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:24:19
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz CronTrigger名称
	 * @param cronExpression	Quartz CronExpression
	 */
	void schedule(String name, CronExpression cronExpression);
	
	/**
	 * @描述:<p>根据 Quartz Cron Expression 调试任务</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:01:23
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name		Quartz CronTrigger名称
	 * @param cronExpression	Quartz CronExpression
	 * @param group		Quartz CronExpression Group
	 */
	void schedule(String name, CronExpression cronExpression,String group);
	/**
	 * @描述:<p>在startTime时执行调试一次 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:25:29
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime	 调度开始时间
	 */
	void schedule(Date startTime);
	
	
	/**
	 * @描述:<p>在startTime时执行调试一次 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:55:57
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime	调度开始时间
	 * @param group		Quartz SimpleTrigger Group
	 */
	void schedule(Date startTime,String group);
	
	/**
	 * @描述:<p>在startTime时执行调试一次 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:26:46
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz SimpleTrigger 名称
	 * @param startTime	 调度开始时间
	 */
	void schedule(String name, Date startTime);
	
	/**
	 * @描述:<p>在startTime时执行调试一次</p>
	 *
	 * @作者:  叶平平(yepp)	
	 *
	 * @时间:  2011-12-29 下午11:02:39
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name		Quartz SimpleTrigger 名称
	 * @param startTime		调度开始时间
	 * @param group		Quartz SimpleTrigger Group
	 */
	void schedule(String name, Date startTime,String group);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:27:57
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime	调度开始时间
	 * @param endTime	调度结束时间
	 */
	void schedule(Date startTime, Date endTime);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:03:34
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime		调度开始时间
	 * @param endTime		调度结束时间
	 * @param group			 Quartz SimpleTrigger Group
	 */
	void schedule(Date startTime, Date endTime,String group) ;
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:29:07
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz SimpleTrigger 名称
	 * @param startTime	调度开始时间
	 * @param endTime	调度结束时间
	 */
	void schedule(String name, Date startTime, Date endTime);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度 </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:04:26
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name Quartz SimpleTrigger 名称
	 * @param startTime 调度开始时间
	 * @param endTime 调度结束时间
	 * @param group Quartz SimpleTrigger Group
	 */
	void schedule(String name, Date startTime, Date endTime,String group) ;
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:30:20
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime	调度开始时间
	 * @param endTime	调度结束时间
	 * @param repeatCount	重复执行次数
	 */
	void schedule(Date startTime, Date endTime, int repeatCount);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:05:09
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime 调度开始时间
	 * @param endTime 调度结束时间
	 * @param repeatCount 重复执行次数
	 * @param group Quartz SimpleTrigger Group
	 */
	void schedule(Date startTime, Date endTime, int repeatCount,String group);
	/**
	 * @描述:<p> 在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次   </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:31:34
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz SimpleTrigger 名称
	 * @param startTime	调度开始时间 
	 * @param endTime	调度结束时间
	 * @param repeatCount	重复执行次数
	 */
	void schedule(String name , Date startTime, Date endTime, int repeatCount);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:05:47
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name Quartz SimpleTrigger 名称
	 * @param startTime 调度开始时间
	 * @param endTime 调度结束时间
	 * @param repeatCount 重复执行次数
	 * @param group Quartz SimpleTrigger Group
	 */
	void schedule(String name, Date startTime, Date endTime, int repeatCount,String group);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次，每隔repeatInterval秒执行一次  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:33:14
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime		调度开始时间
	 * @param endTime	调度结束时间
	 * @param repeatCount	重复执行次数
	 * @param repeatInterval	执行时间隔间
	 */
	void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次，每隔repeatInterval秒执行一次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:06:20
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param startTime 调度开始时间
	 * @param endTime 调度结束时间
	 * @param repeatCount 重复执行次数
	 * @param repeatInterval 执行时间隔间
	 * @param group Quartz SimpleTrigger Group
	 */
	void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval,String group);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次，每隔repeatInterval秒执行一次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午09:35:16
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name	Quartz SimpleTrigger 名称
	 * @param startTime	调度开始时间
	 * @param endTime	调度结束时间
	 * @param repeatCount	重复执行次数
	 * @param repeatInterval	执行时间隔间 
	 */
	void schedule(String name, Date startTime, Date endTime , int repeatCount, long repeatInterval);
	
	/**
	 * @描述:<p>在startTime时执行调试，endTime结束执行调度，重复执行repeatCount次，每隔repeatInterval秒执行一次</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:06:58
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param name Quartz SimpleTrigger 名称
	 * @param startTime 调度开始时间
	 * @param endTime 调度结束时间
	 * @param repeatCount 重复执行次数
	 * @param repeatInterval 执行时间隔间
	 * @param group Quartz SimpleTrigger Group
	 */
	void schedule(String name ,Date startTime, Date endTime, int repeatCount, long repeatInterval, String group);
	
	/**
	 * @描述:<p>Trigger 参数,以jframe.quartz.common.QuartzConstants常量为键封装的Map  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:07:30
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param map
	 */
	void schedule(Map<String,String> map);
	
	/**
	 * @描述:<p>取得所有调度Triggers  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:10:37
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @return
	 */
	List<Map<String, Object>> getQrtzTriggers();
	/**
	 * @描述:<p>根据名称和组别暂停Tigger</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:10:59
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param triggerName	名称
	 * @param group		组别
	 */
	void pauseTrigger(String triggerName,String group);
	
	/**
	 * @描述:<p>恢复Trigger</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:11:25
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param triggerName	名称
	 * @param group		组别
	 */
	void resumeTrigger(String triggerName,String group);
	
	/**
	 * @描述:<p>除Trigger</p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2011-12-29 下午11:11:52
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param triggerName	名称
	 * @param group		组别
	 * @return
	 */
	boolean removeTrigdger(String triggerName,String group);
}
